package disenioPantallas;

import java.util.Vector;

import entidades.Animal;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;

public class AnimalesDataSource implements JRDataSource{

	private Vector<Animal> animales= new Vector<Animal>();
	public Vector<Animal> getAnimales() {
		return animales;
	}

	public void setAnimales(Vector<Animal> animales) {
		this.animales = animales;
	}

	private int indiceAnimalActual=-1;
	
	@Override
	public Object getFieldValue(JRField jr) throws JRException {

	    Object valor = null;  

	    if("idAnimal".equals(jr.getName())) 
	    { 
	        valor = animales.get(indiceAnimalActual).getIdAnimal(); 
	    } 
	    else if("especie".equals(jr.getName())) 
	    { 
	        valor = animales.get(indiceAnimalActual).getEspecie().getNombreEspecie(); 
	    } 
	    else if("raza".equals(jr.getName())) 
	    { 
	        valor = animales.get(indiceAnimalActual).getRaza().getRaza(); 
	    } 
	    else if("categoria".equals(jr.getName())) 
	    { 
	        valor = animales.get(indiceAnimalActual).getCategoria().getCategoria(); 
	    }
	    else if("campo".equals(jr.getName())) 
	    { 
	        valor = animales.get(indiceAnimalActual).getPotreroActual().getCampoPerteneciente().getNombreCampo(); 
	    }
	    else if("potrero".equals(jr.getName())) 
	    { 
	        valor = animales.get(indiceAnimalActual).getPotreroActual().getNombrePotrero(); 
	    }
	    else if("caravana".equals(jr.getName())) 
	    { 
	        valor = animales.get(indiceAnimalActual).getCaravanaActual().getCaravana(); 
	    }

	    else if("observacion".equals(jr.getName())) 
	    { 	
	    	valor=new String("");
	    	if(animales.get(indiceAnimalActual).isCastrado()) valor+="Castrado. ";
	    	if(animales.get(indiceAnimalActual).isDescornado()) valor+="Descornado. ";
	    	if(animales.get(indiceAnimalActual).getPesoActual()!=null) valor+=String.format("Peso: %d kg.", animales.get(indiceAnimalActual).getPesoActual());
	    }

	    return valor; 
	}

	@Override
	public boolean next() throws JRException {
		return ++indiceAnimalActual < animales.size();
	}

}
